Storage systems using RAID (Redundant Array of Inexpensive Disks) technology are widely used. With RAID technologies, data is arranged across multiple disks (or multiple RAID arrays in a RAID-on-RAID configuration) to support redundancy and/or improved access, depending on the particular RAID configuration. When a RAID controller controls a set of RAID arrays, it is sometimes called a “RAID-on-RAID” configuration. RAID configurations require processing resources to manage the distribution of data across the disk drive storage devices or RAID arrays and, in most configurations, temporary storage or swap space to support RAID and RAID maintenance activities.
For example, in most RAID configurations, data integrity is protected by adding redundancy across multiple disk drives such that the loss of a single disk (or the loss of a RAID array in a RAID-on-RAID configuration) will not result in data loss. For example, in a RAID 5 configuration, data is stored in blocks of equal size and the data blocks are distributed across multiple disk drives. Parity data blocks are calculated and distributed across the disk drives such that if a single disk drive is lost, the contents of the lost disk drive many be rebuilt using the available data information from the other working disk drives. Rebuilding a RAID 5 disk entails deriving or calculating the contents of the lost disk drive (or RAID array in a RAID-on-RAID configuration) based on the available data blocks and/or parity data blocks residing on the remaining disk drives.
In some cases, RAID operations may be very I/O intensive. In some cases, RAID systems may be taken off-line during RAID operations, disrupting data access. In other cases, when access to RAID systems is maintained during RAID operations, data access may be slow, due in part to the significant impact of I/O activities. For example, one I/O intensive technique for expanding a RAID 5 system includes the following steps: copying the entire data set from the existing RAID system to a back-up storage location, erasing the RAID format, adding one or more disk drive storage devices to the RAID system, reformatting the expanded group into a bigger RAID system and copying the saved data back.
In some cases the use of a destructive zone may reduce some resource requirements for expanding a RAID-5 system. For example, in some cases, a destructive zone may be enabled by allocating disk storage sections on existing disk drives in the RAID system and dedicating those sections as “destructive zones” to serve as temporary storage during a RAID expansion operations. The destructive zone(s) may be used for temporarily holding or rearranging parity data blocks, data blocks and/or intermediate calculations associated with RAID operations, thereby reducing off-disk I/O operations. However, by using an on-disk destructive zone, RAID operations may still be subject to hard disk input/output limitations and/or hard disk access delays as data is physically relocated on a hard disk and/or copied from hard disk to hard disk. Furthermore, in some cases, access to the data stored on a RAID system may be slow or unavailable during rebuilding or maintenance activities.
In some cases, it is time consuming, disruptive and/or resource intensive to execute other RAID rebuilding or maintenance related activities such as, but not limited to, rebuilding a disk, reformatting a RAID system, expanding a RAID system, shrinking a RAID system, migrating RAID system hardware or software, changing the standard RAID system block size format.
What is needed is a method and apparatus for enabling efficient maintenance and/or recovery for RAID systems.